package com.emerquim.bean.model;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.faces.model.SelectItem;

import org.apache.log4j.Logger;

import com.emerquim.persistence.dao.EventoTecnologico;
import com.emerquim.persistence.dao.PTipoemergencia;
import com.emerquim.persistence.dao.PTipoemergenciaDAO;
import com.emerquim.persistence.dao.Transporte;

public class Tecnologico {

	/**
	 * Atributos de la clase
	 */
	private int tipoEmergencia;
	private int actividadEmergencia;
	private String otraActividad;
	private String descripcionEvento;
	private String infoSuministrada;
	private ArrayList<SelectItem> lstTiposEmergencia;
	
	/**
	 * Objeto que contiene el 
	 */
	private Transporte transporte;
	
	/**
	 * Atributo para guardar la lista de transportes del evento tecnologico
	 */
	private List<Transporte> listaTransportes;

	/**
	 * Funcionalidad de log
	 */
	private static final Logger log = Logger.getLogger(Entidad.class);

	/**
	 * Constructor por defecto
	 */
	public Tecnologico() {
		super();
		this.inicializarDatos();
	}

	/**
	 * Constructor completo
	 * 
	 * @param tipoEmergencia
	 * @param actividadEmergencia
	 * @param otraActividad
	 * @param descripcionEvento
	 * @param infoSisproquim
	 * @param lstTiposEmergencia
	 */
	public Tecnologico(int tipoEmergencia, int actividadEmergencia, String otraActividad, String descripcionEvento,
			String infoSuministrada, ArrayList<SelectItem> lstTiposEmergencia) {
		super();
		this.tipoEmergencia = tipoEmergencia;
		this.actividadEmergencia = actividadEmergencia;
		this.otraActividad = otraActividad;
		this.descripcionEvento = descripcionEvento;
		this.infoSuministrada = infoSuministrada;
		this.lstTiposEmergencia = lstTiposEmergencia;
	}

	/**
	 * @return the tipoEmergencia
	 */
	public int getTipoEmergencia() {
		return tipoEmergencia;
	}

	/**
	 * @param tipoEmergencia
	 *            the tipoEmergencia to set
	 */
	public void setTipoEmergencia(int tipoEmergencia) {
		this.tipoEmergencia = tipoEmergencia;
	}

	/**
	 * @return the actividadEmergencia
	 */
	public int getActividadEmergencia() {
		return actividadEmergencia;
	}

	/**
	 * @param actividadEmergencia
	 *            the actividadEmergencia to set
	 */
	public void setActividadEmergencia(int actividadEmergencia) {
		this.actividadEmergencia = actividadEmergencia;
	}

	/**
	 * @return the otraActividad
	 */
	public String getOtraActividad() {
		return otraActividad;
	}

	/**
	 * @param otraActividad
	 *            the otraActividad to set
	 */
	public void setOtraActividad(String otraActividad) {
		this.otraActividad = otraActividad;
	}

	/**
	 * @return the descripcionEvento
	 */
	public String getDescripcionEvento() {
		return descripcionEvento;
	}

	/**
	 * @param descripcionEvento
	 *            the descripcionEvento to set
	 */
	public void setDescripcionEvento(String descripcionEvento) {
		this.descripcionEvento = descripcionEvento;
	}

	/**
	 * @return the infoSisproquim
	 */
	public String getInfoSuministrada() {
		return infoSuministrada;
	}

	/**
	 * @param infoSisproquim
	 *            the infoSisproquim to set
	 */
	public void setInfoSuministrada(String infoSuministrada) {
		this.infoSuministrada = infoSuministrada;
	}

	/**
	 * @return the lstTiposEmergencia
	 */
	public ArrayList<SelectItem> getLstTiposEmergencia() {
		return lstTiposEmergencia;
	}

	/**
	 * @param lstTiposEmergencia
	 *            the lstTiposEmergencia to set
	 */
	public void setLstTiposEmergencia(ArrayList<SelectItem> lstTiposEmergencia) {
		this.lstTiposEmergencia = lstTiposEmergencia;
	}

	/**
	 * @return the transporte
	 */
	public Transporte getTransporte() {
		return transporte;
	}

	/**
	 * @param transporte the transporte to set
	 */
	public void setTransporte(Transporte transporte) {
		this.transporte = transporte;
	}

	/**
	 * Inicializa los datos en blanco para el tipo de evento toxicologico
	 */
	public void inicializarDatos() {
		this.tipoEmergencia = 1;
		this.actividadEmergencia = 1;
		this.otraActividad = "";
		this.descripcionEvento = "";
		this.infoSuministrada = "";
		this.lstTiposEmergencia = new ArrayList<SelectItem>();
		this.establecerTiposEmergencia();
		this.listaTransportes = new ArrayList<Transporte>();
		this.transporte = new Transporte();
	}

	/**
	 * Establece la lista lstTiposEmergencia con valores de tipos de emergencias
	 */
	public void establecerTiposEmergencia() {
		List<PTipoemergencia> lstTiposEmerge;
		PTipoemergenciaDAO tipoEmergenciaDAO = new PTipoemergenciaDAO();
		try {
			lstTiposEmerge = tipoEmergenciaDAO.findByProperty("PTipoEvento.tevId", 2L);
			// Se obtien un Iterador y recorre la lista.
			Iterator<PTipoemergencia> iter = lstTiposEmerge.iterator();
			while (iter.hasNext()) {
				PTipoemergencia te = new PTipoemergencia();
				te = iter.next();
				this.lstTiposEmergencia.add(new SelectItem(te.getTemId(), te.getTemDesc()));
			}
		} catch (Exception e) {
			log.error("Error al listar los tipos de emergencias de la base de datos");
			e.printStackTrace();
		}
	}
}
